#include <iostream>

// TIP 要<b>Run</b>代码，请按 <shortcut actionId="Run"/> 或点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
#include <vector>
using namespace std;

bool canBeIncreasing(vector<int>& nums) {
    bool removed = false;          // 是否已“删除”过一个元素（逻辑上）
    int n = nums.size();
    if (n <= 2) return true;       // 0/1/2 个元素必然可行

    int prev = nums[0];            // “当前有效的前一个值”
    for (int i = 1; i < n; ++i) {
        if (nums[i] > prev) {
            // 正常严格递增，推进 prev
            prev = nums[i];
            continue;
        }

        // 发现不递增：nums[i] <= prev
        if (removed) return false; // 第二次冲突：需要第二次删除 → 不可行
        removed = true;            // 使用一次“删除”名额

        // 决定删左边还是右边：
        // 优先删左边（把 prev 更新为 nums[i]），前提是不会破坏 nums[i] 与 nums[i-2] 的递增
        if (i == 1 || nums[i] > nums[i - 2]) {
            prev = nums[i];        // 等价于“删左边 nums[i-1]”，把前驱改成当前
        } else {
            // 否则删右边 nums[i]：保持 prev 不变，等价于跳过当前元素
            // 什么也不做
        }
    }
    return true;
}

int func1() {
    string s = "world";
    int left = 0, right = s.size() - 1;
    while (left < right) {
        swap(s[left], s[right]);
        left++;
        right--;
    }
    cout << s << endl;   // 输出 dlrow
    return 0;
}